#include "Rectangulo.h"

using namespace std;

Rectangulo::
Rectangulo(const Punto& p, int ancho, int alto) : ancho(ancho), alto(alto)
{
    SetX(p.GetX());
    SetY(p.GetY());
}

Rectangulo::
Rectangulo(const Rectangulo& r) : Primitiva(r.GetX(), r.GetY())
{
    ancho = r.GetAncho();
    alto = r.GetAlto();
    SetGrados(r.GetGrados());
}

const Rectangulo&
Rectangulo::
operator=(const Rectangulo& r)
{
    if(this != &r)
    {
        this -> ~Rectangulo();
        ancho = r.GetAncho();
        alto = r.GetAlto();
        SetX(r.GetX());
        SetY(r.GetY());
    }

    return *this;
}

void
Rectangulo::
Dibujar()
{
    cout << "Dibujo un rectangulo en el punto ";
    Primitiva::Dibujar();
    cout << "\n con ancho " << GetAncho() << " y alto " << GetAlto() << endl;
}

void
Rectangulo::
Redimensionar(bool aumentar, bool x, bool y)
{
    int n = 1;

    if(!aumentar)
        n = -1;

    if(x && (ancho >= 2 || aumentar))
        ancho += n;

    if(y && (alto >= 2 || aumentar))
        alto += n;
}

void Rectangulo::SetAncho(int a) {
    if(a <= 0) {
        SetX(GetX() + a);
        ancho += -a;
    } else {
        ancho = a;
    }
};

void Rectangulo::SetAlto(int a) {
    if(a <= 0) {
        SetY(GetY() + a);
        alto += -a;
    } else {
        alto = a;
    }
};